import time
import threading



import time
import threading

class Countdown:
    def __init__(self, n):
        self.n = n
        self.thr = threading.Thread(target=self.run)
        self.thr.daemon = True
        self.thr.start()

    def run(self):
        while self.n > 0:
            print('T-minus', self.n)
            self.n -= 1
            time.sleep(5)


    # 有些类型的对象是不能被序列化的。这些通常是那些依赖外部系统状态的对象， 比如打开的文件，网络连接，线程，进程，栈帧等等
    # __getstate__() 和 __setstate__() 方法来绕过这些限制
    def __getstate__(self): # 序列化的时候，pickle.dump
        return self.n

    def __setstate__(self, n): # 逆序列化的时候，pickle.load
        self.__init__(n)

